package com.jerry.base.dynamicproxy;

import java.lang.reflect.Proxy;

/**
 * 明星代理测试
 *
 * @author Jerry
 * @since 2024/7/17 15:33
 */
public class StarTest {

    public static void main(String[] args) {
        SuperStar superStar = new SuperStar("李知恩");
        StarHandler starHandler = new StarHandler(superStar);

        // 第一个参数：类加载器，用这个类加载器加载代理类，一般用需要代理的类的类加载器
        // 第二个参数：指定生成的代理类需要实现的接口都有哪些
        // 第三个参数：指定生成的代理类如何实现接口
        Star proxyStar = (Star) Proxy.newProxyInstance(
                superStar.getClass().getClassLoader(),
                superStar.getClass().getInterfaces(),
                starHandler
        );

        String result = proxyStar.sing("我以前的故事");
        System.out.println(result);
        proxyStar.dance();

    }
}
